home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume9 / siotools / part01 next >
Encoding:
Text File  |  1989-12-04  |  19.6 KB  |  793 lines

  1. Newsgroups: comp.sources.misc
  2. subject: v09i044: siotools part 1/2
  3. from: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  4. Reply-To: wht%n4hgf@gatech.edu (Warren Tucker)
  5.  
  6. Posting-number: Volume 9, Issue 44
  7. Submitted-by: wht%n4hgf@gatech.edu (Warren Tucker)
  8. Archive-name: siotools/part01
  9.  
  10. This shar pair contains two programs, both related to SCO UNIX and XENIX
  11. asynchronous I/O.   Both have been given to various system administrators
  12. on XENIX 286 and 386 and UNIX 386 systems and appear to have no overt
  13. bugs.  There are kernel dependencies, but they may be hackable for
  14. other systems.
  15.  
  16. SIOMON displays kernel tty structures on ttys 1a-1h and 2a-2h (provided
  17. that's a superset of what you have on your system).  Detailed
  18. status may be displayed on a single line.
  19.  
  20. UUSNAP displays HDB UUCP connection status.  Detailed status may be
  21. displayed on a single connection.
  22.  
  23. ------ c u t   h e r e ---------
  24. #!/bin/sh
  25. # This is a shell archive built by shar 3.03
  26. # Created Mon Dec  4 18:28:30 EST 1989 by gatech!kd4nc!n4hgf!wht
  27. # Source directory /u4/src/uusnap
  28. #
  29. # existing files WILL be overwriten
  30. #
  31. # This shar contains:
  32. #    README
  33. #    Makefile
  34. #    kmemsio.h
  35. #    wintty.h
  36. #    utoa.h
  37. #    kmemsio.c
  38. #    wintty.c
  39. #    utoa.c
  40. #
  41. touch 2>&1 | fgrep '[-amc]' > /tmp/s3_touch$$
  42. if [ -s /tmp/s3_touch$$ ]
  43. then
  44.     TOUCH=can
  45. else
  46.     TOUCH=cannot
  47. fi
  48. rm -f /tmp/s3_touch$$
  49. echo "x - extracting README (Text)"
  50. sed 's/^X//' << 'SHAR_EOF' > README &&
  51. X
  52. XThis shar contains two programs, both related to SCO UNIX and XENIX
  53. Xasynchronous I/O.   Both have been given to various system administrators
  54. Xon XENIX 286 and 386 and UNIX 386 systems and appear to have no overt
  55. Xbugs.  There are kernel dependencies, but they may be hackable for
  56. Xother systems.
  57. X
  58. XPROGRAMS
  59. X--------
  60. XSIOMON displays kernel tty structures on ttys 1a-1h and 2a-2h (provided
  61. Xthat's a superset of what you have on your system).  Detailed
  62. Xstatus may be displayed on a single line.
  63. X
  64. XUUSNAP displays HDB UUCP connection status.  Detailed status may be
  65. Xdisplayed on a single connection.
  66. X
  67. XThese display hacks are self-documenting.  Just read the following
  68. Xand have fun.
  69. X
  70. XTERMIO HACK
  71. X-----------
  72. XUnder XENIX, termio.h is included twice (once by curses.h/tcap.h and
  73. Xagain by sys/tty.h.  You need to modify termio.h under XENIX to
  74. Xprevent multiple inclusions from resulting in compilation errors.
  75. X
  76. XAdd at the top of /usr/include/sys/termio.h:
  77. X#if !defined(TERMIO_HACK) || (defined(TERMIO_HACK) && !defined(IOCTYPE))
  78. X
  79. XAdd at the bottom:
  80. X#endif
  81. X
  82. XThis will result in termio.h continuing it's "broken" state unless
  83. X#define TERMIO_HACK
  84. Xappears in including source code.  The problem does not exist in UNIX 3.2
  85. X
  86. XHAVE_SELECT
  87. X-----------
  88. XSIOMON will use select(S) if you have it on your system.  It is
  89. Xautomagically turned on when compiled for UNIX targets.  If you have
  90. XXENIX 386 2.3.2 or later, or XENIX 2.3.1 with a fixed select(S),
  91. Xadd a -DHAVE_SELECT to CFLAGS in the Makefile.
  92. X
  93. XMAKING & INSTALLING
  94. X-------------------
  95. XTo make: edit the Makefile to select the CFLAGS for XENIX 286 or other
  96. Xsystem.  Then 'make' or 'make all'.
  97. X
  98. XTo install, edit LBIN in the Makefile to have your favorite local
  99. Xbin directory path, 'su root' and 'make install'.
  100. X
  101. X------------------------------------------------------------------
  102. XBugs and suggestions appreciated.
  103. XWarren Tucker,  Mountain Park, Georgia ...!gatech!kd4nc!n4hgf!wht 
  104. SHAR_EOF
  105. chmod 0644 README || echo "restore of README fails"
  106. if [ $TOUCH = can ]
  107. then
  108.     touch -m 1204181889 README
  109. fi
  110. echo "x - extracting Makefile (Text)"
  111. sed 's/^X//' << 'SHAR_EOF' > Makefile &&
  112. X#  CHK=0xCE2E
  113. X#-----------------------------------
  114. X# Makefile for uusnap & siomon
  115. X# gatech!kd4nc!n4hgf!wht
  116. X#-----------------------------------
  117. X#+:EDITS:
  118. X#:12-04-1989-18:28-wht-release to comp.sources.misc
  119. X#:11-23-1989-20:46-wht-creation
  120. X
  121. X# for XENIX 386 and UNIX
  122. XCFLAGS=-DM_TERMCAP -Ox -s
  123. X
  124. X# for XENIX 286
  125. X#CFLAGS=-DM_TERMCAP -Ox -s -M2me -LARGE -F 2000
  126. X
  127. XLIB=-ltcap -ltermlib -lx
  128. XLBIN=/u3/bin
  129. X
  130. XSIOMON_OBJ = \
  131. X    siomon.o\
  132. X    kmemsio.o \
  133. X    utoa.o \
  134. X    wintty.o
  135. X
  136. XUUSNAP_OBJ = \
  137. X    uusnap.o\
  138. X    kmemsio.o \
  139. X    utoa.o \
  140. X    wintty.o
  141. X
  142. Xall: uusnap siomon
  143. X
  144. Xuusnap: $(UUSNAP_OBJ)
  145. X    cc $(CFLAGS) $(UUSNAP_OBJ) -o $@ $(LIB)
  146. X
  147. Xsiomon: $(SIOMON_OBJ)
  148. X    cc $(CFLAGS) $(SIOMON_OBJ) -o $@ $(LIB)
  149. X
  150. Xinstall: all
  151. X    cp siomon $(LBIN)
  152. X    chown root $(LBIN)/siomon
  153. X    chmod 4111 $(LBIN)/siomon
  154. X    cp uusnap $(LBIN)
  155. X    chown root $(LBIN)/uusnap
  156. X    chmod 4111 $(LBIN)/uusnap
  157. X
  158. Xshar:
  159. X    shar -v README Makefile kmemsio.h wintty.h utoa.h \
  160. X                            kmemsio.c wintty.c utoa.c > siotools.1.sh
  161. X    shar -v siomon.c uusnap.c > siotools.2.sh
  162. X
  163. SHAR_EOF
  164. chmod 0644 Makefile || echo "restore of Makefile fails"
  165. if [ $TOUCH = can ]
  166. then
  167.     touch -m 1204182889 Makefile
  168. fi
  169. echo "x - extracting kmemsio.h (Text)"
  170. sed 's/^X//' << 'SHAR_EOF' > kmemsio.h &&
  171. X/* CHK=0x230E */
  172. X/*+-----------------------------------------------------------------------
  173. X    kmemsio.h
  174. X------------------------------------------------------------------------*/
  175. X/*+:EDITS:*/
  176. X/*:12-04-1989-16:49-afterlint-creation */
  177. X
  178. X#define    SIO_NTTY    16
  179. Xextern struct tty sio[SIO_NTTY];
  180. X
  181. X#ifndef BUILDING_LINT_ARGS
  182. X#ifdef LINT_ARGS
  183. X
  184. X/* kmemsio.c */
  185. Xchar *kmem_init_tty(void );
  186. Xchar *kmem_read_tty(int ,int );
  187. X
  188. X#else        /* compiler doesn't know about prototyping */
  189. X
  190. X/* kmemsio.c */
  191. Xchar *kmem_init_tty();
  192. Xchar *kmem_read_tty();
  193. X
  194. X#endif /* LINT_ARGS */
  195. X#endif /* BUILDING_LINT_ARGS */
  196. X
  197. X/* end of kmemsio.h */
  198. SHAR_EOF
  199. chmod 0644 kmemsio.h || echo "restore of kmemsio.h fails"
  200. if [ $TOUCH = can ]
  201. then
  202.     touch -m 1204165989 kmemsio.h
  203. fi
  204. echo "x - extracting wintty.h (Text)"
  205. sed 's/^X//' << 'SHAR_EOF' > wintty.h &&
  206. X/* CHK=0x1F62 */
  207. X/*+-----------------------------------------------------------------------
  208. X    wintty.h
  209. X------------------------------------------------------------------------*/
  210. X/*+:EDITS:*/
  211. X/*:12-04-1989-16:50-afterlint-creation */
  212. X
  213. X#ifndef BUILDING_LINT_ARGS
  214. X#ifdef LINT_ARGS
  215. X
  216. X/* wintty.c */
  217. Xchar *B_to_baud_rate(int );
  218. Xchar *cflag_to_baud_d_p_s(int );
  219. Xvoid wintty(struct _win_st *,int ,int ,struct tty *);
  220. Xvoid wintty_template(struct _win_st *,int ,int ,int );
  221. X
  222. X#else        /* compiler doesn't know about prototyping */
  223. X
  224. X/* wintty.c */
  225. Xchar *B_to_baud_rate();
  226. Xchar *cflag_to_baud_d_p_s();
  227. Xvoid wintty();
  228. Xvoid wintty_template();
  229. X
  230. X#endif /* LINT_ARGS */
  231. X#endif /* BUILDING_LINT_ARGS */
  232. X
  233. X/* end of wintty.h */
  234. SHAR_EOF
  235. chmod 0644 wintty.h || echo "restore of wintty.h fails"
  236. if [ $TOUCH = can ]
  237. then
  238.     touch -m 1204165089 wintty.h
  239. fi
  240. echo "x - extracting utoa.h (Text)"
  241. sed 's/^X//' << 'SHAR_EOF' > utoa.h &&
  242. X/* CHK=0x3B34 */
  243. X/*+-----------------------------------------------------------------------
  244. X    utoa.h
  245. X------------------------------------------------------------------------*/
  246. X/*+:EDITS:*/
  247. X/*:12-04-1989-16:50-afterlint-creation */
  248. X
  249. X/* unsigned to decimal ascii w/leading spaces */
  250. X#define utoda(buf,width,n)  utoda_common(buf,width,n,' ')
  251. X
  252. X/* unsigned to decimal ascii w/leading zeroes */
  253. X#define utoda_lz(buf,width,n)  utoda_common(buf,width,n,'0')
  254. X
  255. X/* unsigned to octal ascii w/leading spaces */
  256. X#define utooa(buf,width,n)  utooa_common(buf,width,n,' ')
  257. X
  258. X/* unsigned to octal ascii w/leading zeroes */
  259. X#define utooa_lz(buf,width,n)  utooa_common(buf,width,n,'0')
  260. X
  261. X#ifndef BUILDING_LINT_ARGS
  262. X#ifdef LINT_ARGS
  263. X
  264. X/* utoa.c */
  265. Xvoid utoda_common(char *,int ,unsigned int ,char );
  266. Xvoid utooa_common(char *,int ,unsigned int ,char );
  267. X
  268. X#else        /* compiler doesn't know about prototyping */
  269. X
  270. X/* utoa.c */
  271. Xvoid utoda_common();
  272. Xvoid utooa_common();
  273. X
  274. X#endif /* LINT_ARGS */
  275. X#endif /* BUILDING_LINT_ARGS */
  276. X
  277. X/* end of utoa.h */
  278. SHAR_EOF
  279. chmod 0644 utoa.h || echo "restore of utoa.h fails"
  280. if [ $TOUCH = can ]
  281. then
  282.     touch -m 1204165989 utoa.h
  283. fi
  284. echo "x - extracting kmemsio.c (Text)"
  285. sed 's/^X//' << 'SHAR_EOF' > kmemsio.c &&
  286. X/* CHK=0xF436 */
  287. X/*+-------------------------------------------------------------------------
  288. X    kmemsio.c
  289. X    ...!gatech!emory!tridom!wht
  290. X
  291. X  Defined functions:
  292. X    kmem_init_tty()
  293. X    kmem_read_tty(ttfirst,ttcount)
  294. X
  295. X--------------------------------------------------------------------------*/
  296. X/*+:EDITS:*/
  297. X/*:12-04-1989-16:05-wht-creation */
  298. X
  299. X#include <sys/types.h>
  300. X#include <sys/stat.h>
  301. X#define TERMIO_HACK /* for XENIX termio.h multiple inclusion problem */
  302. X#include <sys/tty.h>
  303. X
  304. X#include "kmemsio.h"
  305. X
  306. X#if defined(M_UNIX)
  307. X#include <nlist.h>
  308. X#define XLIST nlist
  309. X#define XL_name n_name
  310. X#define XL_value n_value
  311. X#define XL_type n_type
  312. X#else
  313. X#include <sys/a.out.h>
  314. X#define XLIST xlist
  315. X#define XL_name xl_name
  316. X#define XL_value xl_value
  317. X#define XL_type xl_type
  318. X#endif
  319. X
  320. X#ifdef M_UNIX
  321. Xchar *kernel_file = "/unix";
  322. X#else
  323. Xchar *kernel_file = "/xenix";
  324. X#endif
  325. Xchar *kmem_file = "/dev/kmem";
  326. X
  327. Xint kmemfd;
  328. X
  329. X#if defined(M_UNIX)
  330. Xstruct XLIST kernel_symbols[] = {
  331. X#define KS_SIO_TTY    0
  332. X    { "sio_tty" },
  333. X    { (char *)0 }
  334. X};
  335. X#else
  336. Xstruct XLIST kernel_symbols[] = {
  337. X#define KS_SIO_TTY    0
  338. X    {0,0,0, "_sio_tty" },
  339. X    {0,0,0, (char *)0 }
  340. X};
  341. X#endif
  342. X
  343. X#define    sio_tty_fpos kernel_symbols[KS_SIO_TTY].XL_value
  344. X
  345. Xstruct tty sio[SIO_NTTY];
  346. X
  347. Xstatic char errmsg[80];
  348. X
  349. Xextern int errno;
  350. Xextern char *sys_errlist[];
  351. X
  352. X/*+-------------------------------------------------------------------------
  353. X    kmem_read_tty(ttfirst,ttcount)
  354. X--------------------------------------------------------------------------*/
  355. Xchar *
  356. Xkmem_read_tty(ttfirst,ttcount)
  357. Xint ttfirst;
  358. Xint ttcount;
  359. X{
  360. Xint len = ttcount * sizeof(struct tty);
  361. X
  362. X    if(((unsigned)ttfirst >= SIO_NTTY) ||
  363. X        (((unsigned)ttfirst + (unsigned)ttcount) > SIO_NTTY))
  364. X        return(" illegal tty ");
  365. X
  366. X    if(lseek(kmemfd,sio_tty_fpos + (ttfirst * sizeof(struct tty)),0) == -1)
  367. X    {
  368. X        sprintf(errmsg,
  369. X            " kmem lseek failure: %s ",sys_errlist[errno]);
  370. X        return(errmsg);
  371. X    }
  372. X    errno = 0;
  373. X    if(read(kmemfd,(char *)sio,len) != len)
  374. X    {
  375. X        sprintf(errmsg,
  376. X            " kmem read failure: %s ",sys_errlist[errno]);
  377. X        return(errmsg);
  378. X    }
  379. X
  380. X    return((char *)0);
  381. X
  382. X}    /* end of kmem_read_tty */
  383. X
  384. X/*+-------------------------------------------------------------------------
  385. X    kmem_init_tty()
  386. X--------------------------------------------------------------------------*/
  387. Xchar *
  388. Xkmem_init_tty()
  389. X{
  390. X
  391. X    if((kmemfd = open(kmem_file,0)) < 0)
  392. X    {
  393. X        sprintf(errmsg," %s: %s ",kmem_file,sys_errlist[errno]);
  394. X        return(errmsg);
  395. X    }
  396. X
  397. X    if(XLIST(kernel_file,kernel_symbols))
  398. X    {
  399. X        sprintf(errmsg," xlist/nlist failure: %s ",kernel_file);
  400. X        return(errmsg);
  401. X    }
  402. X
  403. X    return((char *)0);
  404. X
  405. X}    /* end of kmem_init_tty */
  406. X
  407. X/* vi: set tabstop=4 shiftwidth=4: */
  408. X/* end of kmemsio.c */
  409. SHAR_EOF
  410. chmod 0644 kmemsio.c || echo "restore of kmemsio.c fails"
  411. if [ $TOUCH = can ]
  412. then
  413.     touch -m 1204170489 kmemsio.c
  414. fi
  415. echo "x - extracting wintty.c (Text)"
  416. sed 's/^X//' << 'SHAR_EOF' > wintty.c &&
  417. X/* CHK=0xED50 */
  418. X/*+-------------------------------------------------------------------------
  419. X    wintty.c
  420. X    ...!gatech!emory!tridom!wht
  421. X
  422. XUnder XENIX, termio.h is included twice (once by curses.h/tcap.h andf
  423. Xagain by sys/tty.h.  You need to bracket the termio.h under XENIX with
  424. X  #if !defined(TERMIO_HACK) || (defined(TERMIO_HACK) && !defined(IOCTYPE))
  425. X  ...
  426. X  #endif
  427. X
  428. X  Defined functions:
  429. X    B_to_baud_rate(code)
  430. X    cflag_to_baud_d_p_s(cflag)
  431. X    wintty(win,tly,tlx,tty)
  432. X    wintty_template(win,tly,tlx,show_flag)
  433. X
  434. X--------------------------------------------------------------------------*/
  435. X/*+:EDITS:*/
  436. X/*:12-04-1989-15:40-wht-creation */
  437. X
  438. X#include <curses.h>
  439. X#include <sys/types.h>
  440. X#define TERMIO_HACK /* for XENIX termio.h multiple inclusion problem */
  441. X#include <sys/tty.h>
  442. X#include "wintty.h"
  443. X
  444. Xtypedef struct slabel
  445. X{
  446. X    int y,x;
  447. X    char *label;
  448. X} SLABEL;
  449. X
  450. XSLABEL tty_slabels[] =
  451. X{
  452. X    {  0,  0, "iflag:" },
  453. X    {  2,  0, "oflag:" },
  454. X    {  3,  0, "cflag:" },
  455. X    {  4,  0, "lflag:" },
  456. X    {  5,  7, "INTR QUIT ERASE KILL EOF/VMIN  EOL/VTIME EOL2 SWTCH" },
  457. X    {  6,  0, "cc:" },
  458. X    {  -1,-1, (char *)0}
  459. X};
  460. X
  461. Xtypedef struct tfield
  462. X{
  463. X    int y,x;
  464. X    char *label;
  465. X    int flag_num;
  466. X    int mask;
  467. X} TFIELD;
  468. X
  469. X#define IFLAG 1
  470. X#define OFLAG 2
  471. X#define LFLAG 3
  472. X#define CFLAG 4
  473. X
  474. XTFIELD tty_tfields[] =
  475. X{
  476. X    {  0,  7, "IGNBRK", IFLAG, IGNBRK },
  477. X    {  0, 15, "BRKINT", IFLAG, BRKINT },
  478. X    {  0, 23, "IGNPAR", IFLAG, IGNPAR },
  479. X    {  0, 31, "PARMRK", IFLAG, PARMRK },
  480. X    {  0, 39, "INPCK",  IFLAG, INPCK },
  481. X    {  0, 46, "ISTRIP", IFLAG, ISTRIP },
  482. X    {  0, 53, "INLCR",  IFLAG, INLCR },
  483. X    {  0, 60, "IGNCR",  IFLAG, IGNCR },
  484. X    {  0, 68, "ICRNL",  IFLAG, ICRNL },
  485. X    {  1,  7, "IUCLC",  IFLAG, IUCLC },
  486. X    {  1, 15, "IXON",   IFLAG, IXON },
  487. X    {  1, 23, "IXOFF",  IFLAG, IXOFF },
  488. X    {  1, 31, "IXANY",  IFLAG, IXANY },
  489. X    {  2,  7, "OPOST",  OFLAG, OPOST },
  490. X    {  2, 15, "OLCUC",  OFLAG, OLCUC },
  491. X    {  2, 23, "ONLCR",  OFLAG, ONLCR },
  492. X    {  2, 31, "OCRNL",  OFLAG, OCRNL },
  493. X    {  2, 39, "ONOCR",  OFLAG, ONOCR },
  494. X    {  2, 46, "ONLRET", OFLAG, ONLRET },
  495. X    {  2, 53, "OFDEL",  OFLAG, OFDEL },
  496. X    {  3, 23, "CREAD",  CFLAG, CREAD },
  497. X    {  3, 31, "HUPCL",  CFLAG, HUPCL },
  498. X    {  3, 39, "CLOCAL", CFLAG, CLOCAL },
  499. X    {  4,  7, "ISIG",   LFLAG, ISIG },
  500. X    {  4, 15, "ICANON", LFLAG, ICANON },
  501. X    {  4, 23, "XCASE",  LFLAG, XCASE },
  502. X    {  4, 31, "ECHO",   LFLAG, ECHO },
  503. X    {  4, 39, "ECHOE",  LFLAG, ECHOE },
  504. X    {  4, 46, "ECHOK",  LFLAG, ECHOK },
  505. X    {  4, 53, "ECHONL", LFLAG, ECHONL },
  506. X    {  4, 60, "NOFLSH", LFLAG, NOFLSH },
  507. X    {  4, 68, "XCLUDE", LFLAG, XCLUDE },
  508. X    {  -1,-1, (char *)0,    -1,    -1 }
  509. X};
  510. X
  511. Xtypedef struct fcursor
  512. X{
  513. X    int y,x;
  514. X} FCURSOR;
  515. X
  516. XFCURSOR tty_fcursors[] =
  517. X{
  518. X#define Fc_intr       0
  519. X    {  6,  8 },
  520. X#define Fcc_quit      1
  521. X    {  6, 13 },
  522. X#define Fcc_erase     2
  523. X    {  6, 18 },
  524. X#define Fcc_kill      3
  525. X    {  6, 24 },
  526. X#define Fcc_eof       4
  527. X    {  6, 30 },
  528. X#define Fcc_eol       5
  529. X    {  6, 40 },
  530. X#define Fcc_eol2      6
  531. X    {  6, 49 },
  532. X#define Fcc_swtch     7
  533. X    {  6, 54 },
  534. X#define Fbaud_b_p_s   8
  535. X    {  3,  7 }
  536. X};
  537. X
  538. Xtypedef struct b_to_br
  539. X{
  540. X    char *baud_rate;
  541. X    int B_code;
  542. X} B_TO_BR;
  543. X
  544. XB_TO_BR speeds[] =     /* ordered to put less common rates later in table */
  545. X{                    /* and the vagaries of baud rates above 9600 "handled" */
  546. X    " 2400",    B2400,
  547. X    " 1200",    B1200,
  548. X    " 9600",    B9600,
  549. X#if defined(B19200)
  550. X    "19200",    B19200,
  551. X#endif
  552. X#if defined(B38400)
  553. X    "38400",    B38400,
  554. X#endif
  555. X    " 4800",    B4800,
  556. X    "  300",    B300,
  557. X    "  110",    B110,
  558. X    "   75",    B75,
  559. X    "   50",    B50,
  560. X    "  HUP",    B0,
  561. X    " EXTA",    EXTA,
  562. X    " EXTB",    EXTB,
  563. X
  564. X    (char *)0,0
  565. X};
  566. X
  567. X/*+-------------------------------------------------------------------------
  568. X    B_to_baud_rate(code) - convert CBAUD B_ code to baud rate string
  569. X--------------------------------------------------------------------------*/
  570. Xchar *
  571. XB_to_baud_rate(code)
  572. X{
  573. Xregister int n;
  574. X
  575. X    for(n=0; speeds[n].baud_rate; n++)
  576. X        if(speeds[n].B_code == code)
  577. X            return(speeds[n].baud_rate);
  578. X    return("-----");
  579. X}    /* end of B_to_baud_rate */
  580. X
  581. X/*+-------------------------------------------------------------------------
  582. X    cflag_to_baud_d_p_s(cflag)
  583. X--------------------------------------------------------------------------*/
  584. Xchar *
  585. Xcflag_to_baud_d_p_s(cflag)
  586. Xint cflag;
  587. X{
  588. Xregister char * cptr;
  589. Xstatic char rtnstr[16];
  590. X
  591. X    strcpy(rtnstr,B_to_baud_rate(cflag & CBAUD));
  592. X    cptr = rtnstr + strlen(rtnstr);
  593. X    *cptr++ = '-';
  594. X    switch(cflag & CSIZE)
  595. X    {
  596. X        case CS5: *cptr++ = '5'; break;
  597. X        case CS6: *cptr++ = '6'; break;
  598. X        case CS7: *cptr++ = '7'; break;
  599. X        case CS8: *cptr++ = '8'; break;
  600. X    }
  601. X    *cptr++ = '-';
  602. X    *cptr++ = (cflag & PARENB) ? ((cflag & PARODD) ? 'O' : 'E') : 'N';
  603. X    *cptr++ = '-';
  604. X    *cptr++ = (cflag & CSTOPB) ? '2' : '1';
  605. X    *cptr = 0;
  606. X    return(rtnstr);
  607. X
  608. X}    /* end of cflag_to_baud_d_p_s */
  609. X
  610. X/*+-----------------------------------------------------------------------
  611. X    wintty(win,tly,tlx,tty)
  612. X
  613. X000000000011111111112222222222333333333344444444445555555555666666666677777
  614. X012345678901234567890123456789012345678901234567890123456789012345678901234
  615. Xiflag: IGNBRK  BRKINT  IGNPAR  PARMRK  INPCK  ISTRIP INLCR  IGNCR   ICRNL
  616. X       IUCLC   IXON    IXOFF   IXANY
  617. Xoflag: OPOST   OLCUC   ONLCR   OCRNL   ONOCR  ONLRET OFDEL
  618. Xcflag: 09600-8-N-1     CREAD   HUPCL   CLOCAL
  619. Xlflag: ISIG    ICANON  XCASE   ECHO    ECHOE  ECHOK  ECHONL NOFLSH  XCLUDE
  620. X       INTR QUIT ERASE KILL EOF/VMIN  EOL/VTIME EOL2 SWTCH 
  621. Xcc:     03   1c   08    15    01        00       00   00   
  622. X
  623. X------------------------------------------------------------------------*/
  624. Xvoid
  625. Xwintty(win,tly,tlx,tty)
  626. XWINDOW *win;
  627. Xint tly;
  628. Xint tlx;
  629. Xstruct tty *tty;
  630. X{
  631. Xregister flag;
  632. Xregister i_cc;
  633. Xregister char *cptr;
  634. XTFIELD *tptr = tty_tfields;
  635. XFCURSOR *fptr = tty_fcursors;
  636. X
  637. X    while(tptr->y >= 0)
  638. X    {
  639. X        switch(tptr->flag_num)
  640. X        {
  641. X            case IFLAG: flag = tty->t_iflag; break;
  642. X            case OFLAG: flag = tty->t_oflag; break;
  643. X            case LFLAG: flag = tty->t_lflag; break;
  644. X            case CFLAG: flag = tty->t_cflag; break;
  645. X        }
  646. X        flag &= tptr->mask;
  647. X        wmove(win,tptr->y + tly,tptr->x + tlx);
  648. X        if(flag)
  649. X            wstandout(win);
  650. X        waddstr(win,tptr->label);
  651. X        if(flag)
  652. X            wstandend(win);
  653. X        tptr++;
  654. X    }
  655. X    for(i_cc = 0; i_cc < NCC; i_cc++)
  656. X    {
  657. X        wmove(win,fptr->y + tly,fptr->x + tlx);
  658. X        wprintw(win,"%02x",tty->t_cc[i_cc]);
  659. X        fptr++;
  660. X    }
  661. X
  662. X    fptr = &tty_fcursors[Fbaud_b_p_s];
  663. X    wmove(win,fptr->y + tly,fptr->x + tlx);
  664. X    waddstr(win,"           ");
  665. X    wmove(win,fptr->y + tly,fptr->x + tlx);
  666. X    waddstr(win,cflag_to_baud_d_p_s(tty->t_cflag));
  667. X
  668. X}    /* end of wintty */
  669. X
  670. X/*+-------------------------------------------------------------------------
  671. X    wintty_template(win,tly,tlx,show_flag)
  672. X--------------------------------------------------------------------------*/
  673. Xvoid
  674. Xwintty_template(win,tly,tlx,show_flag)
  675. XWINDOW *win;
  676. Xint tly;
  677. Xint tlx;
  678. Xint show_flag;
  679. X{
  680. Xregister y;
  681. XSLABEL *sptr = tty_slabels;
  682. X
  683. X    for(y = 0; y < 7; y++)
  684. X    {
  685. X        wmove(win,tly + y,0);
  686. X        wclrtoeol(win);
  687. X    }
  688. X    if(show_flag)
  689. X    {
  690. X        while(sptr->y >= 0)
  691. X        {
  692. X            wmove(win,sptr->y + tly,sptr->x + tlx);
  693. X            waddstr(win,sptr->label);
  694. X            sptr++;
  695. X        }
  696. X    }
  697. X
  698. X}    /* end of wintty_template */
  699. X
  700. X/* vi: set tabstop=4 shiftwidth=4: */
  701. X/* end of wintty.c */
  702. SHAR_EOF
  703. chmod 0644 wintty.c || echo "restore of wintty.c fails"
  704. if [ $TOUCH = can ]
  705. then
  706.     touch -m 1204182889 wintty.c
  707. fi
  708. echo "x - extracting utoa.c (Text)"
  709. sed 's/^X//' << 'SHAR_EOF' > utoa.c &&
  710. X/* CHK=0xDD15 */
  711. X/*+-------------------------------------------------------------------------
  712. X    utoa.c - fast substitutes for most sprintf needs
  713. X    ...!gatech!emory!tridom!wht
  714. X
  715. X  Defined functions:
  716. X    utoda_common(buf,width,n,leading)
  717. X    utooa_common(buf,width,n,leading)
  718. X
  719. X--------------------------------------------------------------------------*/
  720. X/*+:EDITS:*/
  721. X/*:11-29-1989-03:32-wht-creation */
  722. X
  723. X#include "utoa.h"
  724. X
  725. X/*+-------------------------------------------------------------------------
  726. X    utoda_common(buf,width,n,leading) unsigned to decimal ascii
  727. X--------------------------------------------------------------------------*/
  728. Xvoid
  729. Xutoda_common(buf,width,n,leading)
  730. Xchar *buf;
  731. Xint width;
  732. Xunsigned n;
  733. Xchar leading;
  734. X{
  735. X    register unsigned div;
  736. X    register char *ep = &buf[width];
  737. X
  738. X    *ep = '\0';
  739. X    if(n == 0)
  740. X        *--ep = '0';
  741. X    while(ep-- > buf)
  742. X    {
  743. X        if(n <= 0)
  744. X            *ep = leading;
  745. X        else
  746. X        {
  747. X            div = n / 10;
  748. X            *ep = n - 10*div + '0';
  749. X            n = div;
  750. X        }
  751. X    }
  752. X}    /* end of utoda_common */
  753. X
  754. X/*+-------------------------------------------------------------------------
  755. X    utooa_common(buf,width,n,leading) unsigned to octal ascii
  756. X--------------------------------------------------------------------------*/
  757. Xvoid
  758. Xutooa_common(buf,width,n,leading)
  759. Xchar *buf;
  760. Xint width;
  761. Xunsigned n;
  762. Xchar leading;
  763. X{
  764. Xregister unsigned div;
  765. Xregister char *ep = &buf[width];
  766. X
  767. X    *ep = '\0';
  768. X    if(n == 0)
  769. X        *--ep = '0';
  770. X    while(ep-- > buf)
  771. X    {
  772. X        if(n <= 0)
  773. X            *ep = leading;
  774. X        else
  775. X        {
  776. X            div = n >> 3;
  777. X            *ep = n - (div << 3) + '0';
  778. X            n = div;
  779. X        }
  780. X    }
  781. X}    /* end of utooa_common */
  782. X
  783. X/* vi: set tabstop=4 shiftwidth=4: */
  784. X/* end of utoa.c */
  785. SHAR_EOF
  786. chmod 0644 utoa.c || echo "restore of utoa.c fails"
  787. if [ $TOUCH = can ]
  788. then
  789.     touch -m 1204170189 utoa.c
  790. fi
  791. exit 0
  792.  
  793.